#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
    pid_t pid = fork();
    if(pid == 0)
    {
        // 子进程
        while(1)
        {
            printf("I am process, PID: %d, PPID: %d\n", getpid(), getppid());
        }
    }
    else
    {
        // 父进程
    }

    return 0;
}


//int g_val_1;
//int g_val_2 = 100;
//
//int main()
//{
//    printf("code addr：%p\n", main);// 函数名代表的就是地址，通过打印 main 函数的地址来查看代码区的地址    
//    const char *str = "Hello word";// 定义一个字符串常量    
//    printf("read only string addr：%p\n", str);// 字符常量区的地址    
//    printf("init global value addr：%p\n", &g_val_2);// 已初始化全局变量的地址    
//    printf("uninit global value addr：%p\n", &g_val_1); // 未初始化全局变量的地址    
//    char* men1 = (char*)malloc(100);    
//    printf("heap addr-men1：%p\n", men1);// 堆区的地址    
//    printf("stack addr-str：%p\n", &str); // 栈区的地址 
//    static int sa = 10;// 定义一个静态局部变量                                                                                                                                                                     
//    printf("static a add：%p\n", &sa); 
//
//    int a;
//    int b;
//    int c;
//    printf("stack addr：%p\n", &a);
//    printf("stack addr：%p\n", &b);
//    printf("stack addr：%p\n", &c);
//
//    char* mem1 = (char*)malloc(100);    
//    char* mem2 = (char*)malloc(100);    
//    char* mem3 = (char*)malloc(100);    
//    printf("Heap addr：%p\n", mem1);    
//    printf("Heap addr：%p\n", mem2);    
//    printf("Heap addr：%p\n", mem3);    
//
//    return 0;
//}

